# 文件名：admin.py
# 作者：系统自动生成
# 创建日期：2025-04-26
# 描述：学生管理应用的后台管理配置文件，用于配置Django管理界面中该应用的展示和操作

from django.contrib import admin
from .models import Student, Attendance, Grade, StudentChangeLog

class StudentChangeLogInline(admin.TabularInline):
    """
    学生变更记录内联管理类
    
    功能：
        - 在StudentAdmin中以表格形式展示关联的变更记录
        - 配置只读字段，防止通过内联直接修改历史记录
    """
    model = StudentChangeLog
    extra = 0
    readonly_fields = ('changed_by', 'changed_at', 'change_field', 'old_value', 'new_value', 'change_reason')
    can_delete = False

@admin.register(Student)
class StudentAdmin(admin.ModelAdmin):
    """
    学生信息管理类
    
    功能：
        - 定义学生信息在后台管理界面的展示方式
        - 配置可搜索和过滤的字段
        - 展示学生信息变更记录
    """
    list_display = ('name', 'student_id', 'gender', 'current_class', 'campus', 'current_status')
    search_fields = ('name', 'student_id', 'current_class')
    list_filter = ('gender', 'current_class', 'campus', 'current_status')
    fieldsets = (
        ('基本信息', {'fields': ('user', 'name', 'student_id', 'gender', 'birth_date')}),
        ('联系信息', {'fields': ('address', 'phone', 'parent_name', 'parent_phone')}),
        ('学校信息', {'fields': ('class_name', 'campus', 'enrollment_date', 'status')}),
    )
    inlines = [StudentChangeLogInline]



@admin.register(Attendance)
class AttendanceAdmin(admin.ModelAdmin):
    """
    学生考勤管理类
    
    功能：
        - 定义考勤记录在后台管理界面的展示方式
        - 配置可搜索和过滤的字段
    """
    list_display = ('student', 'date', 'status', 'remark')
    search_fields = ('student__name', 'student__student_id')
    list_filter = ('date', 'status')
    date_hierarchy = 'date'

@admin.register(Grade)
class GradeAdmin(admin.ModelAdmin):
    """
    学生成绩管理类
    
    功能：
        - 定义成绩记录在后台管理界面的展示方式
        - 配置可搜索和过滤的字段
    """
    list_display = ('student', 'course', 'score', 'semester', 'exam_date')
    search_fields = ('student__name', 'student__student_id', 'course')
    list_filter = ('course', 'semester', 'exam_date')
    date_hierarchy = 'exam_date'


